Network processors use multiple units of execution that run independently. These units of execution are commonly referred to as threads or contexts. Receiving threads are utilized to process incoming network packets. The number of available receiving threads varies based on the particular network processor.
Conventionally, receiving threads are bound to a particular port on which packets are received and process only packets received from that port. The bounding of a particular receiving thread is not altered throughout processing period.
However, the flow of network packets across the ports may not be distributed evenly and may vary from time to time. As a result, there may be a shortage of receive threads available to process packets received from a heavy flow port while there may be idle receive threads that are bound to ports with little or no packet flow. In such a scenario, the network processors are under-utilized such that the packet processing speed is adversely affected. Thus there is a need for more efficient and effective systems and methods for assignment of threads for receiving and processing network packets in order to increase overall packet processing speed.